﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
// Copyright (C) 2021 kingerrobot
// 版权所有。 
//
// 文件名：BWcsEquipLocHold
// 文件功能描述：
//
// 创建者：名字 (zzl)
// 时间：2021/12/13 11:27:05
//
// 修改人：
// 时间：
// 修改说明：
// 版本：V1.0.0
//----------------------------------------------------------------*/
#endregion
namespace KingerRobot.MexicoSailunWMS.SpiService;

internal class BWcsEquipLocHold : IWcsEquipLocHold
{
    public List<POWcsEquipLocHold> GetEquipLocHolds()
    {
        var db = Db.Default;
        return db.WcsEquipLocHolds.ToList();
    }

    public List<POWcsEquipLocHold> GetDistinctEquipLocHolds()
    {
        var db = Db.Default;
        return db.WcsEquipLocHolds
                .GroupBy(f => new {f.EquipId,f.LocId})
                .Select(f => new POWcsEquipLocHold { EquipId = f.Key.EquipId,LocId = f.Key.LocId}).ToList();
    }


    public List<POWcsEquipLocHold> GetEquipLocHoldsByWarehouse(long warehouseId)
    {
        var db = Db.Default;
        return db.WcsEquipLocHolds
            .Join(db.RcsEquipCrns, f => f.EquipId, s => s.Id, (f, s) => new { Loc = f, Crn = s })
            .Join(db.RcsEquipWarehouses, f => f.Crn.WarehourseId, s => s.Id, (f, s) => new { f.Loc, Warehourse = s })
            .Where(t => t.Warehourse.Id == warehouseId)
            .Select(t => t.Loc)
            .OrderBy(t => t.RelateScore).ToList();
    }
}
